document generation improvements (#937)
authortsteven4 <13596209+tsteven4@users.noreply.github.com>
Sun, 23 Oct 2022 19:18:37 +0000 (13:18 -0600)
committerGitHub <noreply@github.com>
Sun, 23 Oct 2022 19:18:37 +0000 (13:18 -0600)
* build docs on macos CI.

* add fop for macos ci

* block out of source doc builds, change WEB default.

* add gnu-sed for macos fixdoc

* set default logger for fop

with homebrew fop 2.7 the default logger is something else besides
SimpleLog.
The LOGLEVEL statement is specific to SimpleLog.

.foprc
.github/workflows/macos.yml
CMakeLists.txt
tools/build_and_test_cmake.sh
tools/ci_script_osx.sh
tools/make_gpsbabel_org.sh
tools/make_gpsbabel_pdf.sh

diff --git a/.foprc b/.foprc
index 23b3b179706b428a51e07fec1100ac378f4c3b68..416566a13e51f5d4918393f90aee7bb64e0863d1 100644 (file)
--- a/.foprc
+++ b/.foprc
@@ -1 +1,2 @@
+LOGCHOICE=-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
 LOGLEVEL=-Dorg.apache.commons.logging.simplelog.defaultlog=WARN
index b12fbdc27e24ae5b99fbf5c9dbb66dcf9a2b8b1b..93bc0ea0264b6c60e07b696ea329d41453cc2d91 100644 (file)
@@ -60,8 +60,11 @@ jobs:
       run: |
         brew update
         brew install ninja
+        brew install docbook docbook-xsl fop gnu-sed
 
     - name: Script
+      env:
+        XML_CATALOG_FILES: /usr/local/etc/xml/catalog
       run: |
         source ${HOME}/Cache/qt-${{ matrix.QT_VERSION }}.env
         sudo xcode-select --switch /Applications/Xcode_${{ matrix.XCODE_VERSION }}.app
index 135b491ecec3f9a84ecaa31eb3bea903cb7ba325..2a2b6fd635ce9328fcb1b892a0aa2a925e0e3cbd 100644 (file)
@@ -489,22 +489,23 @@ if(UNIX AND NOT APPLE)
                     USES_TERMINAL)
 endif()
 
-if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
-  set(WEB "../babelweb" CACHE PATH "Path where the documentation will be stored for www.gpsbabel.org.")
+get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
+if((CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) AND NOT _isMultiConfig)
+  set(WEB "gpsbabel.org" CACHE PATH "Path where the documentation will be stored for www.gpsbabel.org.")
   add_custom_target(gpsbabel.org
                     ${CMAKE_SOURCE_DIR}/tools/make_gpsbabel_org.sh ${WEB} ${DOCVERSION}
                     DEPENDS gpsbabel gpsbabel.pdf
                     VERBATIM)
-endif()
 
-if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
   add_custom_target(gpsbabel.html
                     ${CMAKE_SOURCE_DIR}/tools/make_gpsbabel_html.sh
-                    DEPENDS gpsbabel)
-endif()
+                    DEPENDS gpsbabel
+                    VERBATIM)
 
-if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
   add_custom_target(gpsbabel.pdf
                     ${CMAKE_SOURCE_DIR}/tools/make_gpsbabel_pdf.sh
-                    DEPENDS gpsbabel)
+                    DEPENDS gpsbabel
+                    VERBATIM)
+else()
+  message(WARNING "Document generation is only supported for in-source builds with single configuration generators.")
 endif()
index 59d49b67000c0986897419ad3b861092fbcb14cf..1cee9902143bcf3ac38e5cf5e388aecff35029e9 100755 (executable)
@@ -15,7 +15,7 @@ git --no-pager log -n 1
 # build and test keeping output within the pwd.
 export GBTEMP=$(pwd)/gbtemp
 mkdir -p "$GBTEMP"
-cmake . -G Ninja -DCMAKE_BUILD_TYPE=Release -DWEB="$(pwd)/gpsbabel_docdir"
+cmake . -G Ninja -DCMAKE_BUILD_TYPE=Release
 # As of 2018-10, all the virtualized travis build images are two cores per:
 # https://docs.travis-ci.com/user/reference/overview/
 # We'll be slightly abusive on CPU knowing that I/O is virtualized.
index e6ca180b6d1e2c506e082d5c5320a204a4212048..acdfe2137934d57595b4ddbbd1cdf7b1e67ffe85 100755 (executable)
@@ -46,6 +46,9 @@ Xcode | "Ninja Multi-Config")
   cmake --build .
   ctest
   cmake --build . --target package_app
+  cmake --build . --target gpsbabel.html
+  cmake --build . --target gpsbabel.pdf
+  cmake --build . --target gpsbabel.org
   ;;
 esac
 
index f19b45c40ae0556ecc856071ff5085167933dff0..a49d9cbf64e309cb6df3ed32716a017f27ec4cb5 100755 (executable)
@@ -6,8 +6,7 @@ docversion=$2
 
 mkdir -p "${web}/htmldoc-${docversion}"
 perl xmldoc/makedoc
-xmlwf xmldoc/readme.xml #check for well-formedness
-xmllint --noout --valid xmldoc/readme.xml #validate
+xmllint --noout --valid xmldoc/readme.xml #valid and well-formed
 xsltproc \
   --stringparam base.dir "${web}/htmldoc-${docversion}/" \
   --stringparam root.filename "index" \
index e420c53c4d3687598b97e25f3f6a8410eefef574..d3a7316faf0d4def53b905fd84334bc13c9b517a 100755 (executable)
@@ -2,7 +2,6 @@
 set -ex
 
 perl xmldoc/makedoc
-xmlwf xmldoc/readme.xml #check for well-formedness
-xmllint --noout --valid xmldoc/readme.xml #validate
+xmllint --noout --valid xmldoc/readme.xml #valid and well-formed
 xsltproc -o gpsbabel.fo xmldoc/babelpdf.xsl xmldoc/readme.xml
 HOME=. fop -q -fo gpsbabel.fo -pdf gpsbabel.pdf